* or top
* @GTK_ALIGN_CENTER: center natural width of widget inside the
* allocation
+ * @GTK_ALIGN_BASELINE: align the widget according to the baseline. Since 3.10.
*
* Controls how a widget deals with extra space in a single (x or y)
* dimension.
*
* Note that in horizontal context @GTK_ALIGN_START and @GTK_ALIGN_END
* are interpreted relative to text direction.
+ *
+ * GTK_ALIGN_BASELINE support for it is optional for containers and widgets, and
+ * it is only supported for vertical alignment. When its not supported by
+ * a child or a container it is treated as @GTK_ALIGN_FILL.
*/
typedef enum
{
GTK_ALIGN_FILL,
GTK_ALIGN_START,
GTK_ALIGN_END,
- GTK_ALIGN_CENTER
+ GTK_ALIGN_CENTER,
+ GTK_ALIGN_BASELINE
} GtkAlign;
{
switch (align)
{
+ case GTK_ALIGN_BASELINE:
case GTK_ALIGN_FILL:
/* change nothing */
break;
g_object_notify (G_OBJECT (widget), "halign");
}
+GtkAlign
+gtk_widget_get_valign_with_baseline (GtkWidget *widget)
+{
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), GTK_ALIGN_FILL);
+ return _gtk_widget_get_aux_info_or_defaults (widget)->valign;
+}
+
/**
* gtk_widget_get_valign:
* @widget: a #GtkWidget
GtkAlign
gtk_widget_get_valign (GtkWidget *widget)
{
- g_return_val_if_fail (GTK_IS_WIDGET (widget), GTK_ALIGN_FILL);
- return _gtk_widget_get_aux_info_or_defaults (widget)->valign;
+ GtkAlign align;
+
+ align = gtk_widget_get_valign_with_baseline (widget);
+ if (align == GTK_ALIGN_BASELINE)
+ return GTK_ALIGN_FILL;
+ return align;
}
/**
void gtk_widget_set_halign (GtkWidget *widget,
GtkAlign align);
GtkAlign gtk_widget_get_valign (GtkWidget *widget);
+GtkAlign gtk_widget_get_valign_with_baseline (GtkWidget *widget);
void gtk_widget_set_valign (GtkWidget *widget,
GtkAlign align);
gint gtk_widget_get_margin_left (GtkWidget *widget);